package queue

// 可选：扩展选项模式，增强接口灵活性
type (
	Option func(*Options)
	// 队列配置
	Options struct {
		ConsumerGroup string // 消费者组名
		BatchNumber   int64  // 批量处理数量
		TTL           int    // 消息过期时间
		Retry         int    // 重试次数
	}
)

// NewConfig 创建一个新的 Config 实例，应用所有传入的选项
func NewOptions(opts ...Option) Options {
	// 设置默认值
	c := &Options{
		ConsumerGroup: "default",
		BatchNumber:   10,
		TTL:           86400,
		Retry:         0,
	}
	for _, opt := range opts {
		opt(c)
	}
	return *c
}

// WithConsumerGroup 设置消费者组名称
func WithConsumerGroup(group string) Option {
	return func(config *Options) {
		config.ConsumerGroup = group
	}
}

// WithBatchNumber 设置批量处理数量
func WithBatchNumber(num int64) Option {
	return func(config *Options) {
		config.BatchNumber = num
	}
}

// WithTTL 设置消息过期时间
func WithTTL(ttl int) Option {
	return func(config *Options) {
		config.TTL = ttl
	}
}

// WithRetry 设置重试次数
func WithRetry(retry int) Option {
	return func(config *Options) {
		config.Retry = retry
	}
}
